<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    函数.prototype显式原型对象，基于它可以做“继承”
    对象有一个__proto__隐式原型对象，它就是构造函数的prototype对象
    <script>
        // 字面量的面向对象
        var obj = {
            name: "老王",
            run: function () {
                console.log(this.name + '今年21岁了');
            },
            english: function (isRun) {
                console.log(this.name + '英语20级')
                if (isRun) {
                    this.run()
                }
            }
        }
        /* console.log(obj.name)
        obj.run() */
        // obj.english()
        // obj.english('老王能跑吗？')

        // 使用工厂函数来封装一个手机
        function Phone(name, code, fn) {
            this.name = name || '手机'
            this.code = code || '安卓'
            this.fn = fn || function () {
                console.log("一个普通的手机")
            }
            this.version = 'v1.0'
        }
        // 显式的原型对象
        Phone.prototype.sms = function () {
            console.log("正在拨号……")
        }
        // new 构造函数得到实例对象
        var huawei = new Phone('华为', 'p60', function () {
            console.log("信号好！")
        });
        // 对象的隐式原型对象
        // huawei.__proto__ 
        var zhongxing = new Phone('中兴', '230', function () {
            console.log("性价比高！")
        });
        var iphone = new Phone()
        console.log(huawei);
        console.log(zhongxing);
        console.log(iphone);
    </script>
</body>

</html>